//---------------------------------------------------------------------------
#ifndef DMFatH
#define DMFatH

//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "PHTable.h"
#include "StDMFat.h"

//---------------------------------------------------------------------------
class TDMFat1 : public TDataModule
{
__published:  // IDE-managed Components
  PHTable*  TBFat;
  PHTable*  TBDetFat;
  PHTable*  TBDetRet;
  PHTable *TBLcf;
  PHTable *TBVenc;
  void __fastcall TBFatAfterOpen( TObject* Sender );
  void __fastcall TBDetFatAfterOpen( TObject* Sender );
  void __fastcall TBDetFatSinal6GetGT( int Elemento, AnsiString& Resultado, PHDataSource* DS );
  void __fastcall TBDetRetAfterOpen( TObject* Sender );
  void __fastcall TBDetFatQuantidade3Validate( int Elemento, Variant& Conteudo, PHDataSource* DS );
  void __fastcall TBDetFatValorUnitario4Validate( int Elemento, Variant&  Conteudo, PHDataSource*  DS );
  void __fastcall TBDetRetBase3Validate( int Elemento, Variant& Conteudo, PHDataSource* DS );
  void __fastcall TBDetRetAliquota4Validate( int Elemento, Variant& Conteudo, PHDataSource* DS );
  void __fastcall TBDetFatTipo7Validate( int Elemento, Variant&  Conteudo, PHDataSource*  DS );
 void __fastcall TBLcfAfterOpen(TObject *Sender);
 void __fastcall TBFatDataEmissao17Validate(int Elemento,
          Variant &Conteudo, PHDataSource *DS);

private: // User declarations
  void __fastcall ProcessaDadosLista(TObject *Sender);
  bool __fastcall CriaLista(bool Retorno, int MesAno);
  int Ordem; // Ordem da Lista de Lancamantos
  PHDataSource *DSWhile;
  PHDataSource *DSFat;
  PHDataSource *DSContrato;
  PHDataSource *DSLista;
  PHDataSource *DSCamposLivres;
  TStringList *Lista;

public: // User declarations
  __fastcall TDMFat1( TComponent* Owner );
  struct FAT*  Fat;
  struct DETFAT*  DFat;
  enum TOrigem {orNF, orContrato, orFaturamento, orBoleto, orRecebimento, orLista};
  bool __fastcall TemCampo( int CodEmp, AnsiString Campo, AnsiString Conteudo );
  bool __fastcall TemCampoServ( int CodEmp, AnsiString Campo, AnsiString Conteudo );
  bool __fastcall TemCampoRet( int CodEmp, AnsiString Campo, AnsiString Conteudo );
  int __fastcall ConsultaServicos( bool Selecionar, TStringList* ListaServicos, TLista* L1 );
  bool __fastcall ConsultaLancamentosEmissao(TStringList*  Lista, int MesAno, int OrdemEmissao, TOrigem OrigemLista);
  void __fastcall MostraCampos(bool Mostra, TOrigem Origem);
  void __fastcall PeriodoPermitidoEmissao(int MesAno, int &DiaInicial, int &DiaFinal);
  TOrigem Origem;
  AnsiString Lancamento;
  AnsiString CodContrato;
};

//---------------------------------------------------------------------------
extern PACKAGE TDMFat1*  DMFat1;

//---------------------------------------------------------------------------
#endif

